package com.ruoyi.system.dto.design;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 操作日志修改DTO（仅允许修改非核心字段，保护日志完整性）
 */
@Data
@ApiModel(description = "操作日志修改参数")
public class OperationLogUpdateDTO {

    /**
     * 日志ID（必传，用于定位要修改的记录）
     */
    @NotNull(message = "日志ID不能为空")
    @ApiModelProperty(value = "日志主键ID", example = "1001", required = true)
    private Long id;

    /**
     * 操作备注（允许修改，补充说明或修正错误）
     */
    @Size(max = 500, message = "操作备注长度不能超过500字符")
    @ApiModelProperty(value = "操作备注（可修改补充说明）", example = "补充：此操作因客户需求变更执行")
    private String remark;

    /**
     * 是否同步H5设计动态（仅业务类型为DESIGN时允许修改）
     */
    @Min(value = 0, message = "是否同步H5设计动态只能为0或1")
    @Max(value = 1, message = "是否同步H5设计动态只能为0或1")
    @ApiModelProperty(value = "是否同步H5设计动态（0=否，1=是）", example = "1", allowableValues = "0,1")
    private Integer isSyncH5Design;

    /**
     * 操作来源（允许修正错误的来源记录）
     */
    @ApiModelProperty(value = "操作来源", example = "PC_WEB",
            allowableValues = "PC_WEB,APP,H5,SYSTEM")
    private String operateSource;


    /**
     * 操作动作（STATUS_CHANGE=状态变更、FILE_UPLOAD=文件上传、FILE_DELETE=文件删除等）
     */
    @ApiModelProperty(
            value = "操作动作（必选，枚举值：STATUS_CHANGE=状态变更、FILE_UPLOAD=文件上传、FILE_DELETE=文件删除、DATA_ADD=数据新增、DATA_EDIT=数据编辑、DATA_DELETE=数据删除）",
            required = true,
            allowableValues = "STATUS_CHANGE, FILE_UPLOAD, FILE_DELETE, DATA_ADD, DATA_EDIT, DATA_DELETE",
            example = "FILE_UPLOAD"
    )
    private String operateAction;
}